import argparse

from time import gmtime, strftime


def get_parser_args():
    root_path = '/Users/weijinqian/Documents/gitee/mrc'
    parser = argparse.ArgumentParser()
    # 基础配置项
    parser.add_argument('--batch_size', default=4, type=int)
    # 这个在torchtext中无法使用
    parser.add_argument('--num_workers', default=8, type=int)
    parser.add_argument('--seed', default=1234, type=int)
    parser.add_argument('--learning_rate', default=1e-3, type=float)
    parser.add_argument('--dropout', default=0.2, type=float)
    parser.add_argument('--epoch', default=8, type=int)
    parser.add_argument('--cuda', default=False, type=bool)

    # LR Scheduler
    parser.add_argument('--lr_scheduler', choices=['step', 'cosine'], type=str)
    parser.add_argument('--lr_decay_steps', default=20, type=int)
    parser.add_argument('--lr_decay_rate', default=0.5, type=float)
    parser.add_argument('--lr_decay_min_lr', default=1e-5, type=float)
    parser.add_argument('--weight_decay', default=1e-5, type=float)

    # Restart Control, 这个功能先不加，用于加载当前保存的模型
    # parser.add_argument('--load_best', action='store_true')
    # parser.add_argument('--load_dir', default=root_path+'/model_saved', type=str)
    # parser.add_argument('--load_ver', default=None, type=str)
    # parser.add_argument('--load_v_num', default=None, type=int)

    # Training Info
    parser.add_argument('--vocab_file', default=root_path + '/data/vocab.txt')
    parser.add_argument('--n_entities', default=500, type=int)
    parser.add_argument('--train_file', default=root_path + '/data/train')
    parser.add_argument('--dev_file', default=root_path + '/data/dev')
    parser.add_argument('--log_dir', default=root_path + '/lightning_logs', type=str)
    parser.add_argument('--concat_ctx_and_question', default=False, type=bool)
    parser.add_argument('--print_freq', default=5, type=int)
    parser.add_argument('--save_name', default='model')
    parser.add_argument('--word_dim', default=100, type=int)
    parser.add_argument('--vocab_size', default=29959, type=int)
    parser.add_argument('--vector_file', default=root_path + '/data/vector/train_word2vec_200.txt')
    parser.add_argument('--cache_file', default=root_path + '/data/cache')

    # model params
    parser.add_argument('--hidden_size', default=100, type=int)

    args = parser.parse_args()

    # List Arguments
    args.mean_sen = [0.485, 0.456, 0.406]
    args.std_sen = [0.229, 0.224, 0.225]

    setattr(args, 'model_time', strftime('%H:%M:%S', gmtime()))
    return args
